home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1993 / Internet Info CD-ROM (Walnut Creek) (1993).iso / inet / internet-drafts / draft-ietf-pppext-cipx-04.txt < prev    next >
Text File  |  1993-07-19  |  49KB  |  1,537 lines

  1. Internet Area - PPPEXT Working Group                       Saroop Mathur
  2. Internet Draft                                             Mark S. Lewis
  3.                                                            Telebit Corp.
  4. Expires in six months                                          July 1993
  5.  
  6.  
  7.              Compressing IPX Headers Over WAN Media (CIPX)
  8.  
  9.  
  10. Status of this Memo
  11.  
  12.      This draft is a proposed standard protocol for the Internet
  13.      community and requests discussion and suggestions for improvement.
  14.      This document is being submitted to the Internet Engineering Task
  15.      Force (IETF) through the Point-to-Point Protocol Extensions
  16.      (PPPEXT) Working Group.  Comments should be sent to the authors and
  17.      the ietf-ppp@ucdavis.edu mailing list.
  18.  
  19.      Distribution of this memo is unlimited.
  20.  
  21.      This document is an Internet Draft.  Internet Drafts are working
  22.      documents of the IETF, its Areas, and its Working Groups.  Internet
  23.      Drafts are valid for a maximum of six months.  Internet Drafts may
  24.      be updated, replaced, or obsoleted by other documents at any time.
  25.  
  26. Abstract
  27.  
  28.      This document describes a method for compressing the headers of IPX
  29.      datagrams (CIPX).  With this method, it is possible to
  30.      significantly improve performance over lower speed wide area
  31.      network (WAN) media.  For normal IPX packet traffic, CIPX can
  32.      provide a compression ratio of approximately 2:1 including both IPX
  33.      header and data.  This method can be used on various type of WAN
  34.      media, including those supporting PPP and X.25.
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52. Mathur, Lewis            expires in six months                  [Page 1]
  53. DRAFT                             CIPX                         July 1993
  54.  
  55.  
  56. Specification of Requirements
  57.  
  58.    In this document, several words are used to signify the requirements
  59.    of the specification.  These words are often capitalized.
  60.  
  61.    MUST      This word, or the adjective "required", means that the
  62.              definition is an absolute requirement of the specification.
  63.  
  64.    MUST NOT  This phrase means that the definition is an absolute
  65.              prohibition of the specification.
  66.  
  67.    SHOULD    This word, or the adjective "recommended", means that there
  68.              may exist valid reasons in particular circumstances to
  69.              ignore this item, but the full implications should be
  70.              understood and carefully weighed before choosing a
  71.              different course.
  72.  
  73.    MAY       This word, or the adjective "optional", means that this
  74.              item is one of an allowed set of alternatives.  An
  75.              implementation which does not include this option MUST be
  76.              prepared to interoperate with another implementation which
  77.              does include the option.
  78.  
  79.  
  80. Introduction
  81.  
  82.      Internetwork Packet Exchange (IPX) is a protocol defined by the
  83.      Novell Corporation [1].  It is derived from the Internet Datagram
  84.      Protocol (IDP) protocol of the Xerox Network Systems (XNS) family
  85.      of protocols.  IPX is a datagram, connectionless protocol that does
  86.      not require an acknowledgment for each packet sent.  The IPX
  87.      protocol corresponds to the network layer of the ISO model.
  88.  
  89.      Usually, there is a transport layer protocol above IPX.  The most
  90.      common transport protocol is the Netware Core Protocol (NCP), which
  91.      is used for file server access.  The Sequenced Packet Exchange
  92.      (SPX) is the reliable connection-based transport protocol commonly
  93.      used by applications.
  94.  
  95.      The IPX packet consists of a 30 octet IPX header, usually followed
  96.      by the transport layer protocol header.  The NCP header is 6 octets
  97.      in length.  The SPX header is 12 octets in length.
  98.  
  99.      Two strategies are described below for compressing IPX headers.
  100.      This specification requires that implementations of CIPX support
  101.      both IPX header compression strategies.  These header compression
  102.      algorithms are based on those Van Jacobson described [2] for TCP/IP
  103.      packets.
  104.  
  105.  
  106.  
  107. Mathur, Lewis            expires in six months                  [Page 2]
  108. DRAFT                             CIPX                         July 1993
  109.  
  110.  
  111.      The first strategy is to compress only the IPX header.  This
  112.      compression algorithm can be used to compress any IPX packet,
  113.      without affecting the transport protocol.  This algorithm
  114.      compresses a 30 octet IPX header into a one to seven octet header.
  115.  
  116.      The second strategy is to compress the combined IPX and NCP
  117.      headers.  This algorithm compresses only NCP packets with NCP type
  118.      of 0x2222 and 0x3333.  This algorithm compresses a 36 octet NCP/IPX
  119.      header into a one to eight octet header.
  120.  
  121.      Lastly, it is possible and many times desirable, to use this type
  122.      of header compression in conjunction with some type of data
  123.      compression.
  124.  
  125.      Data compression technology takes many forms. Link bit stream
  126.      compression is a common approach over very low speed asynchronous
  127.      links, normally performed by modems transparently.  Transparent bit
  128.      stream compression is also offered in some DSUs, routers and
  129.      bridges.  Data compression can be provided using protocols such as
  130.      CCITT V.42bis[3], MNP 5, Lempel-Ziv, or LAPB[4].
  131.  
  132.      When using both header and data compression, the sequence of
  133.      compression is important.  When sending packets, data compression
  134.      MUST be done after header compression.  Conversely when receiving
  135.      packets, data decompression MUST be done before header
  136.      decompression.
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162. Mathur, Lewis            expires in six months                  [Page 3]
  163. DRAFT                             CIPX                         July 1993
  164.  
  165.  
  166. IPX Compression Algorithm
  167.  
  168.      The normal IPX header consists of the following fields: checksum,
  169.      packet length, transport control (hop count), packet type,
  170.      destination and source address fields.
  171.  
  172.  
  173.                           +-----------------------+
  174.                           |       Checksum        |
  175.                           +-----------------------+
  176.                           |     Packet Length     |
  177.                           +-----------+-----------+
  178.                           |    Hops   |Packet Type|
  179.                           +-----------+-----------+
  180.                           |      Destination      |
  181.                           |        Address        |
  182.                           |      (12 Octets)      |
  183.                           +-----------------------+
  184.                           |        Source         |
  185.                           |        Address        |
  186.                           |      (12 Octets)      |
  187.                           +-----------------------+
  188.  
  189.                               IPX PACKET HEADER
  190.  
  191.  
  192.      The IPX header diagram above is shown without the field alignment
  193.      details.  Consider each field of the IPX header separately, and how
  194.      it typically changes.
  195.  
  196.      Historically, Novell has not used the Checksum field in the IPX
  197.      header, and has required that this field be set to 0xFFFF.  Since
  198.      the Checksum field remains constant, it is clear that the value can
  199.      be compressed.
  200.  
  201.      Where Checksums are implemented (not 0xFFFF), the Checksum MUST be
  202.      included in the compressed packet.  Recalculating the checksum
  203.      would destroy the end-to-end reliability of the connection.  Note
  204.      that Checksums are now implemented in the Fault Tolerant Servers.
  205.  
  206.      For most links, the Packet Length can be determined from the MAC
  207.      layer.  There are cases in which the length cannot be determined
  208.      from the MAC layer.  For example, some hardware devices pad packets
  209.      to a required minimum length.  For links where it is not possible
  210.      to determine the IPX packet length from the MAC layer, packet
  211.      length needs to be included in the compressed packet.
  212.  
  213.      The Transport Control (Hops) field usually does not change between
  214.  
  215.  
  216.  
  217. Mathur, Lewis            expires in six months                  [Page 4]
  218. DRAFT                             CIPX                         July 1993
  219.  
  220.  
  221.      two end-points.  For the purposes of compression, we will assume
  222.      that it never changes, and will not examine this field when
  223.      determining a connection.
  224.  
  225.      The Packet Type field is constant for any connection.
  226.  
  227.      The Destination and Source Address fields are each made up of 12
  228.      octets: Network (4 octets), Node (6 octets), and Socket (2 octets)
  229.      fields.  An IPX connection is the logical association between two
  230.      endpoints known by a given source and destination address pair.
  231.      For any specific IPX connection, the Destination and Source Address
  232.      fields are constant.
  233.  
  234.      Hence, the fields that may need to be included in the compressed
  235.      IPX header are the Checksum and the Packet Length.
  236.  
  237.      While using this IPX header compression algorithm, packets can be
  238.      lost.  The loss of an Initial packet presents a problem.  In this
  239.      case, if the sender later tries to send a compressed packet, the
  240.      receiving end cannot decompress the packet correctly.
  241.  
  242.      Sufficient information is not available in the IPX header to
  243.      determine when a re-transmission has occured.  For this reason, it
  244.      is necessary that the sender of an Initial packet be guaranteed
  245.      that the packet has been received.  Therefore, we provide a
  246.      mechanism for Confirmation of an Initial packet.
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272. Mathur, Lewis            expires in six months                  [Page 5]
  273. DRAFT                             CIPX                         July 1993
  274.  
  275.  
  276. NCP/IPX Header Compression
  277.  
  278.      Since most IPX packets are Netware Core Protocol packets (packet
  279.      type 17), compressing the NCP header will give us added
  280.      performance.  A minimal CIPX implementation MUST also implement
  281.      NCP/IPX compression.
  282.  
  283.  
  284.                                +------------+
  285.                                |    NCP     |
  286.                                |    Type    |
  287.                                +------------+
  288.                                |  Sequence  |
  289.                                |   Number   |
  290.                                +------------+
  291.                                | Connection |
  292.                                |(low octet) |
  293.                                +------------+
  294.                                |   Task     |
  295.                                |   Number   |
  296.                                +------------+
  297.                                | Connection |
  298.                                |(high octet)|
  299.                                +------------+
  300.  
  301.                                  NCP HEADER
  302.  
  303.  
  304.      The NCP header is 6 octets in length consisting of the following
  305.      fields: NCP type, sequence number, connection number and task
  306.      number.
  307.  
  308.      The NCP type field values that are currently defined are:
  309.  
  310.  
  311.           1111   Create Connection
  312.           2222   NCP request from workstation
  313.           3333   NCP reply from file server
  314.           5555   Destroy Connection
  315.           7777   Burst Mode Packet
  316.           9999   Server Busy Packet
  317.  
  318.  
  319.      This NCP header compression algorithm only compresses packets that
  320.      have a type field value of 0x2222 or 0x3333.  If the NCP type is
  321.      0x2222, this packet is a request from the client to the server.
  322.      Conversely if the NCP type is 0x3333, this is a response from the
  323.      server to the client.
  324.  
  325.  
  326.  
  327. Mathur, Lewis            expires in six months                  [Page 6]
  328. DRAFT                             CIPX                         July 1993
  329.  
  330.  
  331.      All other types of NCP packets are not compressed at the NCP level,
  332.      but are compressed at the IPX level.  The Create Connection
  333.      (0x111), Destroy Connection (0x5555) and Server Busy (0x9999)
  334.      packets are not exchanged frequently enough to justify special NCP
  335.      compression.  The Burst Mode (0x7777) packet is discussed below.
  336.  
  337.      The connection number is a constant for a given connection.
  338.  
  339.      The sequence number is increased by one for each new request.
  340.      Hence the sequence number can be determined implicitly.  The
  341.      decompressor increments the sequence number for each compressed
  342.      packet it receives for a connection.
  343.  
  344.      The task number can change unpredictably, although it might remain
  345.      constant for several packets.  If the NCP task number is different
  346.      from the last one for this connection, the NCP task number must be
  347.      included.
  348.  
  349.      If the NCP packet is lost, it will be retransmitted through the
  350.      normal transport layer mechanisms.  The Initial NCP packet does not
  351.      require confirmation, as a re-transmitted packet can be easily
  352.      identified.  This is accomplished by comparing the sequence number
  353.      of the packet to the sequence number of the previous packet.  If
  354.      the sequence number is not exactly one greater than the previous
  355.      packet, a new Initial packet must be sent, although the same
  356.      connection slot may be used.
  357.  
  358.      In the event of compressed packet loss, the sequence number will be
  359.      too small.  When the IPX Checksum is present, the loss can be
  360.      determined at the destination system by an incorrect checksum.
  361.      When there is no checksum present, the loss is more likely to be
  362.      detected upon receiving a later retransmission.
  363.  
  364. NCP Burst Mode Packets
  365.  
  366.      The burst mode protocol uses the NCP type value of 0x7777.  This
  367.      type of packet does not have the normal NCP header described above.
  368.      Instead, it has a 36 octet burst header.  The above NCP header
  369.      compression algorithm should not be used to compress this packet.
  370.      The IPX header in this packet is still compressible with the IPX
  371.      header compression algorithm described.
  372.  
  373. SPX Packets
  374.  
  375.      SPX packets are typically used by applications which require
  376.      reliable service such as print servers.  It is possible to apply a
  377.      similar NCP/IPX technique to SPX/IPX packets.  At this time, we
  378.      have not described such a mechanism.  The IPX header in this packet
  379.  
  380.  
  381.  
  382. Mathur, Lewis            expires in six months                  [Page 7]
  383. DRAFT                             CIPX                         July 1993
  384.  
  385.  
  386.      is still compressible with the IPX header compression algorithm
  387.      described.
  388.  
  389. Compression Header
  390.  
  391.      IPX compression should be negotiated by some means (eg. IPXCP or
  392.      IPXWAN).  Each end must negotiate the desired options, such as the
  393.      maximum number of concurrent connections which will be maintained
  394.      in each direction.  Once IPX compression is negotiated, all IPX
  395.      packets sent over that link have a CIPX header added to the
  396.      beginning of the packet.  The CIPX header is variable in length.
  397.  
  398.      The one octet CIPX header is added even when a regular IPX packet
  399.      is sent over the link.  By including the CIPX header on every
  400.      packet, we support the ability to run CIPX over various WAN links
  401.      as if it were a normal IPX packet.  It does not rely on any new
  402.      link specific packet demultiplexing.
  403.  
  404.      Implementations of this compression protocol must maintain send and
  405.      receive tables indicating the state of each connection.  The
  406.      original header for each connection is stored in a "slot".
  407.      Typically, each client-server connection will use a separate slot.
  408.      Both sides keep a copy of the full IPX header corresponding to each
  409.      slot.  The sending side (compressor) uses this information to
  410.      determine the fields that have changed.  The receiving side
  411.      (decompressor) uses this information to reconstruct the original
  412.      packet header.
  413.  
  414.      The CIPX packet header specifies the type of the packet and any
  415.      options for that packet.  The minimum CIPX header is one octet in
  416.      length.
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437. Mathur, Lewis            expires in six months                  [Page 8]
  438. DRAFT                             CIPX                         July 1993
  439.  
  440.  
  441.  
  442.        7   6   5   4   3   2   1   0
  443.      +---+---+---+---+---+---+---+---+
  444.      |   |   |   |   |   |   |   |   |
  445.      +---+---+---+---+---+---+---+---+
  446.        ^   ^   ^   ^   ^   ^   ^   ^
  447.        |   |   |   |   |   |   |   |
  448.        |   |   |   |   |___|___|___|___ Packet Type
  449.        |   |   |   |                    0    Compressed
  450.        |   |   |   |                    1    Regular
  451.        |   |   |   |                    3    Confirmed Initial
  452.        |   |   |   |                    5    Confirm
  453.        |   |   |   |                    7    Unconfirmed Initial
  454.        |   |   |   |                    9    Reject
  455.        |   |   |   |                   11-15 Reserved
  456.        |   |   |   |
  457.        |__ |__ |__ |___________________ Packet Type Dependent Flags
  458.  
  459.                           FLAGS OCTET
  460.  
  461.  
  462.      As can be seen above, the low order bits specify the packet type.
  463.      All Compressed packets have a lowest bit of zero.  The other packet
  464.      types are odd numbers.
  465.  
  466.      Note that the Flags octet MUST NOT contain the value 0xFF.  This is
  467.      necessary to distinguish the CIPX flags octet from a normal IPX
  468.      header with a 0xFFFF checksum field.  It is important to be able to
  469.      recognize a normal IPX header regardless of the state of
  470.      compression.  It is possible with some link layer protocols such as
  471.      X.25 Permanent Virtual Circuits that one end of the link may fail
  472.      and start sending regular IPX packets without the CIPX header.
  473.      CIPX implementations MUST recognize this situation and renegotiate
  474.      the use of CIPX.
  475.  
  476.      Each packet type has associated flag bits, which are called Packet
  477.      Type Dependent Flags.  Different packet types have different Packet
  478.      Type Dependent Flags.  All bits that are reserved or are not
  479.      specified must be set to zero.
  480.  
  481.      Since none of the packet types other than Compressed currently uses
  482.      any of the flag bits, the packet type field could easily be
  483.      expanded.  Any future expansion must ensure that at least one of
  484.      the bits in the Flags octet remains zero so the value cannot be
  485.      0xFF.
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492. Mathur, Lewis            expires in six months                  [Page 9]
  493. DRAFT                             CIPX                         July 1993
  494.  
  495.  
  496. Compressed Packet
  497.  
  498.      This type of packet does not contain a packet header (either 30
  499.      byte IPX, or 36 byte NCP).  A slot number indicates to the receiver
  500.      which saved header to use to formulate the original packet header
  501.      before passing the packet up to IPX.
  502.  
  503.  
  504.        ________________________________ Slot Number
  505.        |                                0    Assume same as last packet
  506.        |                                1    Included in packet
  507.        |
  508.        |   ____________________________ Checksum
  509.        |   |                            0    Assume 0xFFFF
  510.        |   |                            1    Included in packet
  511.        |   |
  512.        |   |   ________________________ Length
  513.        |   |   |                        0    Determine from MAC length
  514.        |   |   |                        1    Included in packet
  515.        |   |   |
  516.        |   |   |   ____________________ Task Number (NCP only)
  517.        |   |   |   |                    0    Assume same as last packet
  518.        |   |   |   |                    1    Included in packet
  519.        |   |   |   |
  520.        |   |   |   |   ________________ Reserved (Must be zero)
  521.        |   |   |   |   |   |   |
  522.        |   |   |   |   |   |   |   ____ Packet Type
  523.        |   |   |   |   |   |   |   |    0    Compressed Packet
  524.        v   v   v   v   v   v   v   v
  525.      +---+---+---+---+---+---+---+---+
  526.      |   |   |   |   | 0 | 0 | 0 | 0 |
  527.      +---+---+---+---+---+---+---+---+
  528.        7   6   5   4   3   2   1   0
  529.  
  530.  
  531.      Consider each flag in the flags octet, looking at the high order
  532.      bits working toward the lower order bits.  Each of the fields is
  533.      optional, but if present will be found in the same order in the
  534.      compressed packet header.
  535.  
  536.      Slot Number
  537.  
  538.           The slot number flag indicates the slot number field is
  539.           included in the compressed packet.  The slot number field is
  540.           one octet in length and specifies the number of the slot which
  541.           corresponds to the Initial packet header.  Slots are numbered
  542.           starting at zero and continue to the maximum number of slots
  543.           minus one.
  544.  
  545.  
  546.  
  547. Mathur, Lewis            expires in six months                 [Page 10]
  548. DRAFT                             CIPX                         July 1993
  549.  
  550.  
  551.           By default, slot compression is disabled.  If negotiated, slot
  552.           compression can be enabled for those slots which were created
  553.           by the Unconfirmed Initial packet.  When set to one (1), the
  554.           slot number flag indicates the inclusion of the the slot
  555.           number in the compressed packet.  When set to zero (0), the
  556.           slot number flag indicates the omission of the the slot number
  557.           and specifies the use of the same slot number as for the last
  558.           packet.
  559.  
  560.                Implementation Note:
  561.  
  562.                Slot compression MUST only be enabled in a receiver which
  563.                can account for all erroneous and discarded packets.
  564.                When a packet has been discarded, the slot number is
  565.                indeterminate for future packets.  The decompressor MUST
  566.                discard all further packets until a slot number is
  567.                received.
  568.  
  569.      Checksum
  570.  
  571.           When set to one (1), the checksum flag indicates the
  572.           compressed packet will include the 2 octet checksum.  When set
  573.           to zero (0),  this flag indicates the omission of the checksum
  574.           and the decompressor is to assume the checksum is 0xFFFF.
  575.           Note that meaningful checksums must be included in the packet
  576.           with the checksum flag set to one (1).
  577.  
  578.      Length
  579.  
  580.           When set to one (1), the length flag indicates the inclusion
  581.           of the IPX data length field in the compressed packet.  When
  582.           set to zero (0), the length flag indicates the omission of the
  583.           IPX data length field in the compressed packet.
  584.  
  585.           This is the Length field from the original IPX packet header.
  586.           It specifies the length of IPX header and data in the packet
  587.           prior to compression.  It does not include the CIPX
  588.           compression field such as flags, slot number, checksum, length
  589.           field, or the NCP task number.  Note that it is preferable to
  590.           determine the length field from the MAC layer whenever
  591.           possible, by subtracting the length of the compression header
  592.           fields and adding the length of the saved packet header.
  593.  
  594.           Since every octet is significant over lower speed WAN links,
  595.           an optimization is used in the specification of the length.
  596.           It can be specified as a one, two or three octet field.  If
  597.           the length is in the range 0 to 127, then it is specified as a
  598.           one octet field.  If the length is in the range 128 to 16383,
  599.  
  600.  
  601.  
  602. Mathur, Lewis            expires in six months                 [Page 11]
  603. DRAFT                             CIPX                         July 1993
  604.  
  605.  
  606.           it is specified as a two octet field in high to low order,
  607.           with the first octet in the range 128 to 191.  Otherwise, if
  608.           the length is greater than 16383, the first octet contains
  609.           192, and the second and third octets contain the full length.
  610.           (This scheme is extensible to 8 octets, but currently is not
  611.           required in the IPX protocol suite.)
  612.  
  613.  
  614.           +-+-+-+-+-+-+-+-+
  615.           |0|   length    |   length < 128
  616.           +-+-+-+-+-+-+-+-+
  617.  
  618.           ONE OCTET LENGTH FIELD
  619.  
  620.  
  621.  
  622.           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  623.           |1 0|          length           |   length < 16384
  624.           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  625.  
  626.           TWO OCTET LENGTH FIELD
  627.  
  628.  
  629.  
  630.           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  631.           |1 1 0 0 0 0 0 0|            length             |  length < 65535
  632.           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  633.  
  634.           THREE OCTET LENGTH FIELD
  635.  
  636.  
  637.      Task Number
  638.  
  639.           When set to one (1), the NCP task number flag indicates the
  640.           NCP task number is included in the compressed packet (see
  641.           NCP/IPX compression above).  When set to zero (0), the NCP
  642.           task number flag indicates the omission of the NCP task number
  643.           in the compressed packet.  When the NCP task number is not
  644.           included in the compressed packet, we use the same NCP task
  645.           number as that of last packet.
  646.  
  647.      Based upon the bits set in the flags octet, optional portions are
  648.      included in the compressed IPX header.  The minimum compressed IPX
  649.      header contains only the Flags octet.  All fields in the original
  650.      IPX header have been compressed out of the header.  The maximum
  651.      compressed IPX header can include up to 7 octets, the Flags, Slot,
  652.      Checksum (2 octets), and Length (3 octets) fields, or 8 octets if
  653.      the NCP Task Number is included.  The minimum and maximum
  654.  
  655.  
  656.  
  657. Mathur, Lewis            expires in six months                 [Page 12]
  658. DRAFT                             CIPX                         July 1993
  659.  
  660.  
  661.      compressed IPX packets are shown below.  Header fields are one
  662.      octet in length except where noted.
  663.  
  664.  
  665.      +--------+---------
  666.      | Flags  | DATA ...
  667.      |  0x00  |
  668.      +--------+---------
  669.  
  670.      MINIMUM COMPRESSED IPX PACKET
  671.  
  672.  
  673.  
  674.      +--------+--------+---------+---------+---------
  675.      | Flags  |  Slot  |Checksum | Length  | DATA ...
  676.      |  0xE0  | Number |2 octets |3 octets |
  677.      +--------+--------+---------+---------+---------
  678.  
  679.      MAXIMUM COMPRESSED IPX PACKET
  680.  
  681.  
  682.  
  683.      +--------+--------+---------+---------+--------+---------
  684.      | Flags  |  Slot  |Checksum | Length  |NCP Task| DATA ...
  685.      |  0xF0  | Number |2 octets |3 octets | Number |
  686.      +--------+--------+---------+---------+--------+---------
  687.  
  688.      MAXIMUM COMPRESSED NCP/IPX PACKET
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712. Mathur, Lewis            expires in six months                 [Page 13]
  713. DRAFT                             CIPX                         July 1993
  714.  
  715.  
  716. Regular Packet
  717.  
  718.      The Regular packet type designates an IPX packet for which no
  719.      compression is desired.  This type of packet is sent when a packet
  720.      cannot be compressed, or a decision is made not to compress it.
  721.  
  722.  
  723.        7   6   5   4   3   2   1   0
  724.      +---+---+---+---+---+---+---+---+
  725.      | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
  726.      +---+---+---+---+---+---+---+---+
  727.        ^   ^   ^   ^   ^   ^   ^   ^
  728.        |   |   |   |   |   |   |   |
  729.        |   |   |   |   |___|___|___|___ Packet Type
  730.        |   |   |   |                    1    Regular
  731.        |   |   |   |
  732.        |__ |__ |__ |___________________ Reserved (must be zero)
  733.  
  734.  
  735.      The Regular packet is rarely sent.  Usually, the Regular packet is
  736.      sent when there is not enough memory for the overhead of a new
  737.      compression slot.  Also, this type is included for future
  738.      unforeseen changes to the IPX protocol which defeat the
  739.      effectiveness of compression.
  740.  
  741.           Implementation Note:
  742.  
  743.           The Regular Packet can be used for packets that are sporadic,
  744.           which are not worth setting-up a compression slot.  This may
  745.           be hard to determine for specific protocols.  Various methods
  746.           such as hold-down and least-recently-used timers are currently
  747.           being used.
  748.  
  749.      On receipt, the 1 octet header is simply removed and the packet
  750.      passed up to IPX.
  751.  
  752.      The entire IPX packet follows the single Flags octet.  Note for a
  753.      Regular Packet (not compressed or uncompressed), the slot number
  754.      field is not included.
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767. Mathur, Lewis            expires in six months                 [Page 14]
  768. DRAFT                             CIPX                         July 1993
  769.  
  770.  
  771. Confirmed Initial Packet
  772.  
  773.      The Confirmed Initial packet type is used by the compressor to
  774.      inform the decompressor of the original packet header which will be
  775.      used for subsequent compression, and to request Confirmation.  The
  776.      high order 4 bits are reserved for expansion to support additional
  777.      protocols.
  778.  
  779.  
  780.        7   6   5   4   3   2   1   0
  781.      +---+---+---+---+---+---+---+---+
  782.      | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
  783.      +---+---+---+---+---+---+---+---+
  784.        ^   ^   ^   ^   ^   ^   ^   ^
  785.        |   |   |   |   |   |   |   |
  786.        |   |   |   |   |___|___|___|___ Packet Type
  787.        |   |   |   |                    3     Confirmed Initial
  788.        |   |   |   |
  789.        |__ |__ |__ |___________________ 0     IPX Protocol
  790.                                         1-15  Reserved
  791.  
  792.  
  793.      This type of packet is sent to inform the receiver to associate the
  794.      IPX packet header with a slot number.  This packet is sent each
  795.      time a different header format is sent for a given slot, or when
  796.      the sender has not received a Confirmation Packet from the
  797.      receiver.
  798.  
  799.      The Flags octet lower 4 bits indicate the Confirmed Initial CIPX
  800.      packet type.  The high order 4 bits are reserved for expansion to
  801.      support additional protocols.  The Flags octet is always followed
  802.      by the Slot Number and an ID field.  The ID field is one octet in
  803.      length.
  804.  
  805.      For each slot, the ID will increment with every new header sent.
  806.      Different slots may have the same ID.  The combination of slot and
  807.      ID uniquely identify a header.  In practice, the ID octet can be
  808.      any number which is unique for a "reasonably long period" of time.
  809.      A reasonably long period is a function of transmission speed, round
  810.      trip delays, and network load.  There must be very little chance of
  811.      duplicate slot and ID combinations within this period.  Otherwise,
  812.      there is ambiguity as to which header is being identified.
  813.  
  814.           Implementation Note:
  815.  
  816.           There is no requirement to hold or resend the Confirmed
  817.           Initial packet until confirmation.  When a new packet with the
  818.           same IPX header is to be sent, another Confirmed Initial
  819.  
  820.  
  821.  
  822. Mathur, Lewis            expires in six months                 [Page 15]
  823. DRAFT                             CIPX                         July 1993
  824.  
  825.  
  826.           packet should be sent using the same slot, the same ID, and
  827.           the new packet data.
  828.  
  829.           When a new packet with a different IPX header is to be sent,
  830.           it may be sent using a slot which has not received
  831.           confirmation.  A Confirmed Initial packet is sent with the
  832.           same slot, an incremented ID, and the new packet data.
  833.           Assuming a least-recently-used policy for selecting a slot for
  834.           a new IPX header, this provides the ability to reuse slots
  835.           when a Confirmed Initial packet has been sent but not
  836.           confirmed.
  837.  
  838.  
  839.      +---------+---------+---------+-/       /-+----------
  840.      |  Flags  |   Slot  |   ID    |    IPX    |  DATA ...
  841.      |   0x03  |  Number |         |   Header  |
  842.      +---------+---------+---------+-/       /-+----------
  843.  
  844.      CONFIRMED INITIAL PACKET
  845.  
  846.  
  847.      Note that a Confirmed Initial header is followed by a complete IPX
  848.      packet.
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877. Mathur, Lewis            expires in six months                 [Page 16]
  878. DRAFT                             CIPX                         July 1993
  879.  
  880.  
  881. Confirm Packet
  882.  
  883.      The Confirm packet type is used by the decompressor to tell the
  884.      compressor that it has received the Confirmed Initial packet.
  885.  
  886.      When the compressor receives this, it can start sending Compressed
  887.      frames.
  888.  
  889.        7   6   5   4   3   2   1   0
  890.      +---+---+---+---+---+---+---+---+
  891.      | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
  892.      +---+---+---+---+---+---+---+---+
  893.        ^   ^   ^   ^   ^   ^   ^   ^
  894.        |   |   |   |   |   |   |   |
  895.        |   |   |   |   |___|___|___|___ Packet Type
  896.        |   |   |   |                    5    Confirm
  897.        |   |   |   |
  898.        |__ |__ |__ |___________________ Reserved (must be zero)
  899.  
  900.  
  901.      A Confirm Packet is exactly 3 octets in length.  It consists of the
  902.      Flags, Slot Number and ID fields.  The Slot Number field contains
  903.      the number of the slot which is being acknowledged.  The ID field
  904.      contains the ID of the Confirmed Initial Packet which is being
  905.      acknowledged.
  906.  
  907.  
  908.  
  909.      +---------+---------+----------+
  910.      |  Flags  |   Slot  |    ID    |
  911.      |   0x05  |  Number |          |
  912.      +---------+---------+----------+
  913.  
  914.      CONFIRM PACKET
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932. Mathur, Lewis            expires in six months                 [Page 17]
  933. DRAFT                             CIPX                         July 1993
  934.  
  935.  
  936. Unconfirmed Initial Packet
  937.  
  938.      The Unconfirmed Initial packet type is used by the compressor to
  939.      inform the decompressor of the original packet header which will be
  940.      used for subsequent compression while not requesting confirmation.
  941.  
  942.      After sending an Unconfirmed Initial packet, the compressor may
  943.      immediately send Compressed packets without confirmation.
  944.  
  945.  
  946.        7   6   5   4   3   2   1   0
  947.      +---+---+---+---+---+---+---+---+
  948.      | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
  949.      +---+---+---+---+---+---+---+---+
  950.        ^   ^   ^   ^   ^   ^   ^   ^
  951.        |   |   |   |   |   |   |   |
  952.        |   |   |   |   |___|___|___|___ Packet Type
  953.        |   |   |   |                    7     Unconfirmed Initial
  954.        |   |   |   |
  955.        |__ |__ |__ |___________________ 0     NCP Protocol
  956.                                         1-15  Reserved
  957.  
  958.  
  959.      This type of packet is sent to inform the receiver to associate the
  960.      IPX packet header with a slot number.  This packet is sent each
  961.      time a different header format is sent for a given slot.
  962.  
  963.      The Flags octet lower 4 bits indicate the Unconfirmed Initial CIPX
  964.      packet type.  The high order 4 bits are reserved for expansion to
  965.      support additional protocols.  The Flags octet is always followed
  966.      by the Slot Number.
  967.  
  968.  
  969.      +---------+---------+-/        /-+-/       /-+---------
  970.      |  Flags  |   Slot  |    IPX     |    NCP    | NCP
  971.      |   0x07  |  Number |   Header   |   Header  | DATA ...
  972.      +---------+---------+-/        /-+-/       /-+---------
  973.  
  974.      UNCONFIRMED INITIAL PACKET
  975.  
  976.  
  977.      Note that an Unconfirmed Initial header is followed by a complete
  978.      IPX packet.
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987. Mathur, Lewis            expires in six months                 [Page 18]
  988. DRAFT                             CIPX                         July 1993
  989.  
  990.  
  991. Reject Packet
  992.  
  993.      The Reject packet type is used by the decompressor to tell the
  994.      compressor that it has received a CIPX packet with a header which
  995.      it does not support.  This is provided to regulate future
  996.      extensions to CIPX.
  997.  
  998.        7   6   5   4   3   2   1   0
  999.      +---+---+---+---+---+---+---+---+
  1000.      | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
  1001.      +---+---+---+---+---+---+---+---+
  1002.        ^   ^   ^   ^   ^   ^   ^   ^
  1003.        |   |   |   |   |   |   |   |
  1004.        |   |   |   |   |___|___|___|___ Packet Type
  1005.        |   |   |   |                    9    Reject
  1006.        |   |   |   |
  1007.        |__ |__ |__ |___________________ Reserved (must be zero)
  1008.  
  1009.  
  1010.      A Reject Packet is exactly 3 octets in length.  It consists of the
  1011.      Flags, Slot Number and Rejected Flags fields.
  1012.  
  1013.      The Slot Number field contains the number of the slot of the packet
  1014.      which is being rejected.  Since the actual packet type may be
  1015.      unknown or misunderstood, this field actually contains the second
  1016.      octet of the rejected packet.  In the normal case of a known CIPX
  1017.      packet type, this will be the slot number of an initial packet.
  1018.  
  1019.      The Rejected Flags field contains the first octet of the packet
  1020.      being rejected.  The packet type field is left untouched.  Any
  1021.      flags which are correctly recognized should be cleared.  The
  1022.      remaining flags indicate specific features that are being rejected.
  1023.      This information should be sufficient for implementations to adjust
  1024.      the use of certain packet types or dependent flags.
  1025.  
  1026.           Implementation Note:
  1027.  
  1028.           The Flags value of 0xFF is not a valid CIPX packet type.
  1029.           Hence, such a packet type should be recognized as a standard
  1030.           IPX header and forwarded without CIPX processing to the
  1031.           appropriate routines.  Under no circumstances should a Flags
  1032.           value of 0xFF be rejected in a Reject Packet.
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042. Mathur, Lewis            expires in six months                 [Page 19]
  1043. DRAFT                             CIPX                         July 1993
  1044.  
  1045.  
  1046.  
  1047.      +---------+---------+----------+
  1048.      |  Flags  |   Slot  | Rejected |
  1049.      |   0x09  |  Number |  Flags   |
  1050.      +---------+---------+----------+
  1051.  
  1052.      REJECT PACKET
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097. Mathur, Lewis            expires in six months                 [Page 20]
  1098. DRAFT                             CIPX                         July 1993
  1099.  
  1100.  
  1101. Compression Negotiation over PPP Links
  1102.  
  1103.      For PPP links [5], the use of header compression can be negotiated
  1104.      by IPXCP [6].  By default, no compression is enabled.
  1105.  
  1106.      The IPX-Compression-Protocol Configuration Option is used to
  1107.      indicate the ability to receive compressed packets.  Each end of
  1108.      the link must separately request this option if bi-directional
  1109.      compression is desired.
  1110.  
  1111.      The PPP Protocol field is set to the same value as the usual IPX
  1112.      packets, and all IPX packets sent over the link MUST conform to the
  1113.      compressed format.
  1114.  
  1115.      A summary of the IPX-Compression-Protocol Configuration Option
  1116.      format to negotiate Telebit IPX header compression (CIPX) is shown
  1117.      below.  The fields are transmitted from left to right.
  1118.  
  1119.  
  1120.       0                   1                   2                   3
  1121.       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  1122.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1123.      |     Type      |    Length     |    IPX-Compression-Protocol   |
  1124.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1125.      |  Max-Slot-Id  |    Options    |
  1126.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1127.  
  1128.  
  1129.      Type
  1130.  
  1131.           3
  1132.  
  1133.      Length
  1134.  
  1135.           6
  1136.  
  1137.      IPX-Compression-Protocol
  1138.  
  1139.           0002 (hex) for Telebit Compressed IPX headers (CIPX).
  1140.  
  1141.      Max-Slot-Id
  1142.  
  1143.           The Max-Slot-Id field is one octet and indicates the maximum
  1144.           slot identifier.  This is one less than the actual number of
  1145.           slots; the slot identifier has values from zero to Max-Slot-
  1146.           Id.
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152. Mathur, Lewis            expires in six months                 [Page 21]
  1153. DRAFT                             CIPX                         July 1993
  1154.  
  1155.  
  1156.      Options
  1157.  
  1158.           The Options field is one octet, and is comprised of the
  1159.           "logical or" of the following values:
  1160.  
  1161.                0    No options.
  1162.  
  1163.                1    The slot identifer may be compressed.
  1164.  
  1165.                The slot identifier must not be compressed if there is no
  1166.                ability for the PPP link level to indicate an error in
  1167.                reception to the decompression module.  Synchronization
  1168.                after errors depends on receiving a packet with the slot
  1169.                identifier.
  1170.  
  1171.                2    Redefine Compressed Packet type bits 1-3.
  1172.  
  1173.                It was noted earlier that packet types have been chosen
  1174.                such that only the Compressed Packet type is an even
  1175.                number value with the lowest order bit of zero.  All
  1176.                other packet types are odd values with a lowest order bit
  1177.                of one.  The reason for this assignment was to make it
  1178.                possible to determine the Compressed Packet type by
  1179.                examining only one bit.  This make it possible to use all
  1180.                the other 7 bits to indicate status in the Compressed
  1181.                Packet.  The 7 bits are composed of the upper 4 bits
  1182.                which are permanently defined to indicate packet
  1183.                dependent flags, plus bits 1-3 which are otherwise part
  1184.                of the Packet Type.  The upper 4 bits are defined above.
  1185.                The redefinition of bits 1-3 of the Compressed Packet
  1186.                type is left for future expansion.
  1187.  
  1188.                  7   6   5   4   3   2   1   0
  1189.                +---+---+---+---+---+---+---+---+
  1190.                |   |   |   |   |   |   |   | 0 |
  1191.                +---+---+---+---+---+---+---+---+
  1192.                  ^   ^   ^   ^   ^   ^   ^   ^
  1193.                  |   |   |   |   |   |   |   |___ Packet Type
  1194.                  |   |   |   |   |   |   |        0    Compressed Packet
  1195.                  |   |   |   |   |   |   |
  1196.                  |   |   |   |   |___|___|_______ Redefined bits
  1197.                  |   |   |   |
  1198.                  |___|___|___|___________________ Compressed Packet flags
  1199.  
  1200.  
  1201.                By default, this feature in not enabled and this flag is
  1202.                set to zero.  When this flag is set to one, it indicates
  1203.                the desire to use this feature.
  1204.  
  1205.  
  1206.  
  1207. Mathur, Lewis            expires in six months                 [Page 22]
  1208. DRAFT                             CIPX                         July 1993
  1209.  
  1210.  
  1211. Compression Negotiation over IPXWAN Links
  1212.  
  1213.      "IPXWAN" is the protocol Novell uses to exchange necessary router
  1214.      to router information prior to exchanging standard IPX routing
  1215.      information and traffic over WAN datalinks [7].  To negotiate the
  1216.      Telebit compression option, we use Novell's allocated option number
  1217.      for CIPX (00) in the IPXWAN timer request/response packet.
  1218.  
  1219.      The Timer Request packet contains the following Telebit compression
  1220.      option:
  1221.  
  1222.      WOption Number       80        - Define compression type
  1223.      WAccept Option       01        - 0=No, 1=Yes, 3=N/A
  1224.      WOption Data Len     00 03     - Length of option
  1225.      WOption Data         00        - Telebit's compression (CIPX)
  1226.      WOption Data         XX        - Compression options
  1227.      WOption Data         NN        - Compression slots
  1228.  
  1229.  
  1230.      Where the WOption Data fields are:
  1231.  
  1232.      00   Telebit's compression option described in this
  1233.           document (CIPX).
  1234.  
  1235.      XX   Compression options as defined below:
  1236.  
  1237.              0x01   Compress slot ID when possible
  1238.              0x02   Redefine Compressed Packet type bits 1-3.
  1239.  
  1240.      NN   The requested # of compression slots.
  1241.  
  1242.      Accept Option (for compression type) must be set to YES if the
  1243.      option is supported and NO if the option is not supported.  A Timer
  1244.      Response must respond with only one header compression type set to
  1245.      YES.
  1246.  
  1247.      The Timer Response packet that accepts the option will look like
  1248.      this:
  1249.  
  1250.      WOption Number       80        - Define compression type
  1251.      WAccept Option       01        - 0=No, 1=Yes, 3=N/A
  1252.      WOption Data Len     00 03     - Length of option
  1253.      WOption Data         00        - Telebit's compression (CIPX)
  1254.      WOption Data         XX        - Compression options
  1255.      WOption Data         NN        - Compression slots
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262. Mathur, Lewis            expires in six months                 [Page 23]
  1263. DRAFT                             CIPX                         July 1993
  1264.  
  1265.  
  1266.      Where the WOption Data fields are:
  1267.  
  1268.      00   Telebit's compression option described in this
  1269.           document (CIPX).
  1270.  
  1271.      XX   Compression options as defined below:
  1272.  
  1273.              0x01   Compress slot ID when possible
  1274.              0x02   Redefine Compressed Packet type bits 1-3.
  1275.  
  1276.      NN   The negotiated # of slots (The lower of each side's
  1277.           requested number of slots)
  1278.  
  1279.      IPX packets (except of course IPXWAN packets) are not sent over the
  1280.      link until the IPXWAN negotiations are completed.  Once IPXWAN
  1281.      negotiations are completed, regular IPX packets can be sent over
  1282.      the link.
  1283.  
  1284.      If both ends of the link agree on the compression options, then the
  1285.      IPX packets are sent using the specified options.  If either end of
  1286.      the link does not accept a compression option, then this
  1287.      compression option will not be used.  Compression will be done
  1288.      using any remaining options.  Options, by definition, are not
  1289.      required.  Implementations MUST support CIPX without any options.
  1290.  
  1291.      It is the responsibility of the router sending the IPXWAN Timer
  1292.      Response to inform the other router of the options that will be
  1293.      used.  The Timer Response MUST contain a subset of the options
  1294.      received in a Timer Request.
  1295.  
  1296.      To be clear, IPXWAN is used to set up a symmetrical compression
  1297.      link.  Compression is configured identically in both directions.
  1298.      Each end will use the same number of slots and same compression
  1299.      options.  It is illegal for link ends to use different number of
  1300.      slots or different options.
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317. Mathur, Lewis            expires in six months                 [Page 24]
  1318. DRAFT                             CIPX                         July 1993
  1319.  
  1320.  
  1321. IPX Compression Performance
  1322.  
  1323.      The performance of this algorithm will depend on the number of
  1324.      active connections and the number of slots negotiated.  If the
  1325.      number of slots is greater than the number of connections, the hit
  1326.      rate should be very high giving a very high compression ratio.  The
  1327.      performance also depends on the average size of the IPX packets.
  1328.      If the average size of packets is small, then compression will
  1329.      result in a more noticeable performance improvement.
  1330.  
  1331.  
  1332.                          avg_data_len + uncomp_header_len
  1333.      Compression ratio = ----------------------------------
  1334.                          avg_data_len + avg_comp_header_len
  1335.  
  1336.  
  1337.      Where 'avg_data_len' is the average length of data in the IPX
  1338.      packet, and 'uncomp_head_len' is the uncompressed header length
  1339.      which is fixed at 30 octets.  Where 'avg_comp_header_len' is the
  1340.      average length of the compressed IPX header.  The length of the
  1341.      minimum compressed IPX header is 1 octet.  The length of the
  1342.      maximum compressed NCP/IPX header is 8 octets (including the NCP
  1343.      task number), but since no implementation yet sends packets with a
  1344.      length greater than 16K, 7 octets is the commonly encountered
  1345.      maximum.  Perhaps a reasonable 'avg_comp_header_len' is 2, assuming
  1346.      the inclusion of the flag and slot number octets.
  1347.  
  1348.      The maximum length of the data in an IPX packet is 546 octets (576
  1349.      octets - 30 octet IPX header), although newer implementations may
  1350.      send packets of up to 4096 octets.  The minimum length of the data
  1351.      in an IPX packet is 1 octet.  Within the normal distribution of
  1352.      small NCP packets, perhaps a reasonable 'avg_data_len' is 26
  1353.      octets.
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372. Mathur, Lewis            expires in six months                 [Page 25]
  1373. DRAFT                             CIPX                         July 1993
  1374.  
  1375.  
  1376.  
  1377.                               546 + 30
  1378.      Minimal Compression    = -------- =  1.04
  1379.                               546 + 6
  1380.  
  1381.  
  1382.  
  1383.                               1 + 30
  1384.      Maximal Compression    = ------   = 15.50
  1385.                               1 + 1
  1386.  
  1387.  
  1388.  
  1389.                               26 + 30
  1390.      Likely Compression     = -------  =  2.00
  1391.                               26 + 2
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402.  
  1403.  
  1404.  
  1405.  
  1406.  
  1407.  
  1408.  
  1409.  
  1410.  
  1411.  
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427. Mathur, Lewis            expires in six months                 [Page 26]
  1428. DRAFT                             CIPX                         July 1993
  1429.  
  1430.  
  1431. Security Considerations
  1432.  
  1433.      IPX provides some security features, which are fully applicable to
  1434.      CIPX.  CIPX does not significantly alter the basic security of IPX.
  1435.  
  1436. References
  1437.  
  1438.  
  1439. 1    Novell Inc., "IPX Router Specification", September 1992, Part
  1440.      Number: 107-000029-001
  1441.  
  1442.  
  1443. 2    Jacobson, Van, "Compressing TCP/IP Headers for Low-Speed Serial
  1444.      Links", RFC 1144, February 1990
  1445.  
  1446.  
  1447. 3    CCITT Recommendation V.42bis Error Correcting Procedures for DCEs
  1448.      using Error Correction Procedures
  1449.  
  1450.  
  1451. 4    ISO 7776, Information Processing Systems - Data Communication -
  1452.      High Level Data Link Control Procedures - Description of the X.25
  1453.      LAPB-Compatible DTE Data Link Procedures
  1454.  
  1455.  
  1456. 5    Simpson, W. A., "The Point-to-Point Protocol (PPP)", RFC 1331, May
  1457.      1992.
  1458.  
  1459.  
  1460. 6    Simpson, W. A., "The PPP Internet Packet Exchange Control Protocol
  1461.      (IPXCP)", an internet draft which is work in process, July 1993
  1462.  
  1463.  
  1464. 7    Allen, Michael, "Novell IPX Over Various WAN Media [IPXWAN]", RFC
  1465.      1362, August 1992
  1466.  
  1467.  
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482. Mathur, Lewis            expires in six months                 [Page 27]
  1483. DRAFT                             CIPX                         July 1993
  1484.  
  1485.  
  1486. Acknowledgements
  1487.  
  1488.      This compression algorithm incorporates many ideas from the Van
  1489.      Jacobson TCP/IP header compression algorithm.
  1490.  
  1491.      Michael Allen from Novell provided a lot of valuable feedback in
  1492.      the design of this algorithm.  David Piscitello from Bellcore and
  1493.      Marty Del Vecchio at Shiva Corp.  made several good suggestions.
  1494.      Bill Simpson was very helpful in driving PPP, and specifically
  1495.      IPXCP, on the standards course.
  1496.  
  1497. Chair's Address
  1498.  
  1499.  
  1500.      Fred Baker
  1501.      Advanced Computer Communications
  1502.      315 Bollay Drive
  1503.      Santa Barbara, California 93117
  1504.      email: fbaker@acc.com
  1505.  
  1506.  
  1507. Authors' Address
  1508.  
  1509.  
  1510.      Saroop Mathur
  1511.      Telebit Corp.
  1512.      1315 Chesapeake Terrace
  1513.      Sunnyvale, CA 94089-1100
  1514.      email: mathur@telebit.com
  1515.  
  1516.      Mark S. Lewis
  1517.      Telebit Corp.
  1518.      1315 Chesapeake Terrace
  1519.      Sunnyvale, CA 94089-1100
  1520.      email: Mark.S.Lewis@telebit.com
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.